Aller au contenu

Programmation C++/Tris des tableaux à une dimension/Correction

Un livre de Wikilivres.
// Programme TriBulles
/* Trier un tableau à 2 dimensions par la méthode de tri à bulle */
#include <iostream>

using namespace std;

const short max = 10;
typedef short table[max];

void saisirTab(table tab, short taille);
void afficherTab(table tab, short taille);
void echanger2E(short& nb1, short& nb2);
void trieBulles(table tabEnt, short taille);

void main()
{
	table tab;
	short taille;
	do
	{
		cout << "Nombre d'éléments du tableau (2 à " << max << ") ? "; 
		cin >> taille;
	}
	while ((taille < 2) || (taille > max));
	saisirTab(tab, taille);
	trieBulles(tab, taille);
	cout << "Tableau trié : ";
	afficherTab(tab, taille);
	cout << endl;
}
	
void trieBulles(table tabEnt, short taille)
/* Trier en ordre croissant un tableau à 1 dimension par la méthode de tri à bulle */
{
	bool permut; /* Vrai s'il y a eu au moins une permutation dans l'itération en cours. */
	do
	{
		permut = false;
		for(short i=0 ; i<taille-1 ; i++)
		{
			if (tabEnt[i] > tabEnt[i+1])
			{
				echanger2E(tabEnt[i], tabEnt[i+1]);
				permut = true;
			}
		}
	}
	while (permut);
}

void saisirTab(table tabEnt, short taille)
// Saisit les éléments d'un tableau à 1 dimension
{
	for(short i=0;i<taille;i++)
	{
		cout << "Entrer l'élément " << i+1 << " du tableau : ";
		cin>>tabEnt[i];
	}
	cout << endl;
}

void afficherTab(table tabEnt, short taille)
// Affiche les éléments d'un tableau à 1 dimension
{
	for(short i=0;i<taille;i++) cout << tabEnt[i] << " ";
	cout << endl;
}

void echanger2E(short& nb1, short& nb2)
// Échanger les valeurs de 2 entiers
{
	short tampon = nb1;
	nb1 = nb2;
	nb2 = tampon;
}